#ifndef PIPE_H
#define PIPE_H
#include "scommand.h"

typedef struct s_pipeline_t *pipeline_t;
/*crea una estructura spipe
retorna NULL si no es posible crear la estructura pipe line*/
pipeline_t pipeline_create(void);

/*destruye la estructura pipeline, ps tiene que ser !=NULL*/
void pipeline_destroy(pipeline_t ps);

/*inserta por atras una structura scommand a la estructuura spipeline
sc y ps tiene que ser !=NULL.*/
void pipeline_push_back(pipeline_t ps, const scommand_t sc);

/*retorna una estructura scommand
solo debe llamarse si hay estrcturas que retornar,
esto es si pipeline_is_empty==FALSE.
en caso de error retorna NULL
*/
scommand_t pipeline_get_front(pipeline_t ps);

/*retorna un boleano cuyo valor indica si la estructura esta vacia. */
bool pipeline_is_empty(const pipeline_t ps);

/*setea un valor boleano que indica si existe el amperson*/
void pipeline_set_wait(pipeline_t ps, const bool w);

/*retorna un boleano cuyo valor indica si existe un amperson en la estructura*/
bool pipeline_get_wait(const pipeline_t ps);


#endif
